package com.comunicacion2;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class AgregarPuntoActivity extends Activity {

	WifiManager wifi;
	private ScanIntensidadWifi scanWifi;
	EditText etId;
	EditText etX;
	EditText etY;
	EditText etIntensidad;
	EditText etTiempoViajePaq;
	String red;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_agregar_punto);

		Intent intent = getIntent();
		red = intent.getStringExtra("Red");

		etId = (EditText) findViewById(R.id.text_idMedicion);
		etX = (EditText) findViewById(R.id.text_X);
		etY = (EditText) findViewById(R.id.text_Y);
		etIntensidad = (EditText) findViewById(R.id.text_intensidad);
		etTiempoViajePaq = (EditText) findViewById(R.id.text_tiempoViajePaq);

		wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

		createRegisterReceiverIntensidad();

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.agregar_punto, menu);
		return true;
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		unregisterReceiver(scanWifi);

	}

	private void createRegisterReceiverIntensidad() {

		Handler h = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				super.handleMessage(msg);
				DatosRed datosRed = (DatosRed) msg.obj;
				// etIntensidad.setText(msg.obj.toString());
				etIntensidad.setText(String.valueOf(datosRed.getLevel()));
				etTiempoViajePaq.setText(datosRed.getTiempoViajePaq());
			}
		};

		scanWifi = new ScanIntensidadWifi(h, wifi, red);
		IntentFilter intFil = new IntentFilter(
				WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
		registerReceiver(scanWifi, intFil);

	}

	public void calcularIntensidad(View view) {
		if (wifi.isWifiEnabled() == false) {
			Toast.makeText(this, "El wifi está desabilitado.. Habilitandolo..",
					Toast.LENGTH_LONG).show();
			wifi.setWifiEnabled(true);
		}
		wifi.startScan();
		Toast.makeText(this, "Calculando Intensidad....", Toast.LENGTH_SHORT)
				.show();
		etIntensidad.setText(". . .");

	}

	public void aceptarPunto(View view) {
		if (this.isCamposCompletados()) {
			Intent i = getIntent();
			Bundle b = new Bundle();
			b.putString("Id", etId.getText().toString());
			b.putString("X", etX.getText().toString());
			b.putString("Y", etY.getText().toString());
			b.putString("Intensidad", etIntensidad.getText().toString());
			b.putString("TiempoViajePaq", etTiempoViajePaq.getText().toString());
			i.putExtra("RESULTADO", b);
			setResult(RESULT_OK, i);

			// Finalizamos la Activity para volver a la anterior
			finish();
		} else {
			Toast.makeText(this, "Hay campos sin completar", Toast.LENGTH_SHORT)
					.show();
		}
	}

	public void cancelarPunto(View view) {
		setResult(RESULT_CANCELED);
		finish();
	}

	private boolean isCamposCompletados() {
		return ((etId.length() != 0) && (etX.length() != 0)
				&& (etY.length() != 0) && (etIntensidad.length() != 0) && (etTiempoViajePaq
					.length() != 0));
	}

	public void resetIntensidad(View view) {
		etIntensidad.setText("");
	}

}
